class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m=grid.size(),n=grid[0].size();
        vector<vector<int>> dp(m+1,vector<int>(n+1,INT_MAX));//将边界除了第一行第二个其他全部初始化为正无穷
        dp[0][1]=0;//将第一行第二个初始化为0
        for(int i=1;i<m+1;i++){
            for(int j=1;j<n+1;j++){
                dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i-1][j-1];//多开一行一列，注意对应关系
            }
        }
        return dp[m][n];
    }
};
